[INFO] fetching crate spotify-cli 0.5.0...
[INFO] testing spotify-cli-0.5.0 against master#1f7f8ea0721a3b1eb73e6c6d25cccb371434b320 for pr-154065-1
[INFO] extracting crate spotify-cli 0.5.0 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate spotify-cli 0.5.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate spotify-cli 0.5.0
[INFO] tweaked toml for crates.io crate spotify-cli 0.5.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate spotify-cli 0.5.0 on toolchain 1f7f8ea0721a3b1eb73e6c6d25cccb371434b320
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate spotify-cli 0.5.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded assert-json-diff v2.0.2
[INFO] [stderr]   Downloaded wiremock v0.6.5
[INFO] [stderr]   Downloaded deadpool-runtime v0.1.4
[INFO] [stderr]   Downloaded deadpool v0.12.3
[INFO] [stderr]   Downloaded chunked_transfer v1.5.0
[INFO] [stderr]   Downloaded zmij v1.0.14
[INFO] [stderr]   Downloaded predicates v3.1.3
[INFO] [stderr]   Downloaded find-msvc-tools v0.1.7
[INFO] [stderr]   Downloaded clap_complete v4.5.65
[INFO] [stderr]   Downloaded cc v1.2.52
[INFO] [stderr]   Downloaded tiny_http v0.12.0
[INFO] [stderr]   Downloaded ascii v1.1.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9fbc9ec2845730371bb3c62e1d86c8249fa523136836b020c3879ad85aba2658
[INFO] running `Command { std: "docker" "start" "-a" "9fbc9ec2845730371bb3c62e1d86c8249fa523136836b020c3879ad85aba2658", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9fbc9ec2845730371bb3c62e1d86c8249fa523136836b020c3879ad85aba2658", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9fbc9ec2845730371bb3c62e1d86c8249fa523136836b020c3879ad85aba2658", kill_on_drop: false }`
[INFO] [stdout] 9fbc9ec2845730371bb3c62e1d86c8249fa523136836b020c3879ad85aba2658
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cbdbe90be385f02dfb23d13be5538d801dc7f8decaca81d460cbfe6d9c4c4dca
[INFO] running `Command { std: "docker" "start" "-a" "cbdbe90be385f02dfb23d13be5538d801dc7f8decaca81d460cbfe6d9c4c4dca", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling zmij v1.0.14
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling clap_builder v4.5.54
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling webpki-roots v1.0.5
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling chunked_transfer v1.5.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling ascii v1.1.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling tiny_http v0.12.0
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling keyring v3.6.3
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling rustls-webpki v0.103.8
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling clap v4.5.54
[INFO] [stderr]    Compiling clap_complete v4.5.65
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling spotify-cli v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 08s
[INFO] running `Command { std: "docker" "inspect" "cbdbe90be385f02dfb23d13be5538d801dc7f8decaca81d460cbfe6d9c4c4dca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cbdbe90be385f02dfb23d13be5538d801dc7f8decaca81d460cbfe6d9c4c4dca", kill_on_drop: false }`
[INFO] [stdout] cbdbe90be385f02dfb23d13be5538d801dc7f8decaca81d460cbfe6d9c4c4dca
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c926dcd4e3599f15b75d4342ab2f040e7647c80e6a16a47f551ff9b8674b0c84
[INFO] running `Command { std: "docker" "start" "-a" "c926dcd4e3599f15b75d4342ab2f040e7647c80e6a16a47f551ff9b8674b0c84", kill_on_drop: false }`
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling predicates-core v1.0.9
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling predicates-tree v1.0.12
[INFO] [stderr]    Compiling predicates v3.1.3
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling tempfile v3.24.0
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling spotify-cli v0.5.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 37s
[INFO] running `Command { std: "docker" "inspect" "c926dcd4e3599f15b75d4342ab2f040e7647c80e6a16a47f551ff9b8674b0c84", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c926dcd4e3599f15b75d4342ab2f040e7647c80e6a16a47f551ff9b8674b0c84", kill_on_drop: false }`
[INFO] [stdout] c926dcd4e3599f15b75d4342ab2f040e7647c80e6a16a47f551ff9b8674b0c84
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1f7f8ea0721a3b1eb73e6c6d25cccb371434b320" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4e135ba9dee21ff5e1a6d9e25ad66d7b7a2ea01f1331233b284473db41e6caeb
[INFO] running `Command { std: "docker" "start" "-a" "4e135ba9dee21ff5e1a6d9e25ad66d7b7a2ea01f1331233b284473db41e6caeb", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.82s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/spotify_cli-0daa79e3495235c5)
[INFO] [stdout] 
[INFO] [stdout] running 605 tests
[INFO] [stdout] test cli::commands::search::filters::tests::extract_first_uri_from_spotify_when_no_pins ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::extract_first_uri_falls_back_to_pins ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::extract_first_uri_tries_multiple_result_types ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::extract_first_uri_from_spotify_when_pin_has_no_uri ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_exact_matches_handles_missing_name ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::extract_first_uri_prioritizes_spotify_results ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_exact_matches_filters_by_name ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::extract_first_uri_returns_none_when_empty ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_exact_matches_case_insensitive ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_ghost_entries_preserves_valid_entries ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_ghost_entries_removes_invalid_entries ... ok
[INFO] [stdout] test cli::tests::parse_auth_login ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_ghost_entries_handles_empty_items ... ok
[INFO] [stdout] test cli::commands::search::filters::tests::filter_ghost_entries_handles_missing_result_type ... ok
[INFO] [stdout] test cli::tests::parse_markets ... ok
[INFO] [stdout] test cli::tests::parse_log_format ... ok
[INFO] [stdout] test cli::tests::parse_library_alias ... ok
[INFO] [stdout] test cli::tests::parse_auth_login_force ... ok
[INFO] [stdout] test cli::tests::parse_json_flag ... ok
[INFO] [stdout] test cli::tests::parse_follow_artist ... ok
[INFO] [stdout] test cli::tests::parse_pin_add_with_tags ... ok
[INFO] [stdout] test cli::tests::parse_pin_add ... ok
[INFO] [stdout] test cli::tests::parse_player_volume ... ok
[INFO] [stdout] test cli::tests::parse_player_alias_p ... ok
[INFO] [stdout] test cli::tests::parse_player_volume_invalid ... ok
[INFO] [stdout] test cli::tests::parse_player_volume_max ... ok
[INFO] [stdout] test cli::tests::parse_info_alias ... ok
[INFO] [stdout] test cli::tests::parse_search_with_options ... ok
[INFO] [stdout] test cli::tests::parse_search_default ... ok
[INFO] [stdout] test cli::tests::parse_user_top ... ok
[INFO] [stdout] test cli::tests::parse_user_top_default_range ... ok
[INFO] [stdout] test cli::tests::parse_playlist_list ... ok
[INFO] [stdout] test cli::tests::parse_search_alias_s ... ok
[INFO] [stdout] test cli::tests::parse_player_repeat ... ok
[INFO] [stdout] test cli::tests::parse_verbose_flag ... ok
[INFO] [stdout] test cli::tests::parse_player_seek ... ok
[INFO] [stdout] test cli::tests::parse_player_shuffle ... ok
[INFO] [stdout] test cli::tests::parse_player_next ... ok
[INFO] [stdout] test cli::tests::parse_verbose_multiple ... ok
[INFO] [stdout] test endpoints::search::tests::search_result_keys_are_plural ... ok
[INFO] [stdout] test endpoints::search::tests::search_result_keys_count ... ok
[INFO] [stdout] test endpoints::search::tests::search_types_count ... ok
[INFO] [stdout] test endpoints::search::tests::search_types_has_expected_types ... ok
[INFO] [stdout] test endpoints::search::tests::truncate_handles_single_item ... ok
[INFO] [stdout] test endpoints::search::tests::truncate_search_results_works ... ok
[INFO] [stdout] test endpoints::search::tests::truncate_handles_missing_keys ... ok
[INFO] [stdout] test endpoints::search::tests::truncate_handles_empty_items ... ok
[INFO] [stdout] test http::api::tests::delete_request_works ... ok
[INFO] [stdout] test http::api::tests::get_request_handles_401_unauthorized ... ok
[INFO] [stdout] test http::api::tests::get_request_handles_204_no_content ... ok
[INFO] [stdout] test http::api::tests::handles_api_error_with_message ... ok
[INFO] [stdout] test http::api::tests::get_request_returns_json ... ok
[INFO] [stdout] test http::api::tests::get_request_handles_404_not_found ... ok
[INFO] [stdout] test http::api::tests::put_request_works ... ok
[INFO] [stdout] test http::api::tests::url_building ... ok
[INFO] [stdout] test http::api::tests::post_json_sends_body ... ok
[INFO] [stdout] test http::api::tests::post_request_sends_empty_body ... ok
[INFO] [stdout] test http::auth::tests::spotify_auth_new ... ok
[INFO] [stdout] test http::client::tests::http_client_default ... ok
[INFO] [stdout] test http::client::tests::http_error_api_user_message ... ok
[INFO] [stdout] test http::client::tests::http_client_new ... ok
[INFO] [stdout] test http::client::tests::http_error_api_various_statuses ... ok
[INFO] [stdout] test http::auth::tests::auth_error_display ... ok
[INFO] [stdout] test http::auth::tests::spotify_auth_default ... ok
[INFO] [stdout] test http::auth::tests::spotify_auth_url_building ... ok
[INFO] [stdout] test http::client::tests::http_error_display ... ok
[INFO] [stdout] test http::auth::tests::auth_error_token_exchange_status ... ok
[INFO] [stdout] test http::auth::tests::auth_error_debug ... ok
[INFO] [stdout] test http::client::tests::http_error_display_for_all_variants ... ok
[INFO] [stdout] test http::client::tests::http_error_is_debug ... ok
[INFO] [stdout] test http::client::tests::http_error_retry_after ... ok
[INFO] [stdout] test http::client::tests::http_error_status_codes ... ok
[INFO] [stdout] test http::client::tests::http_error_user_messages ... ok
[INFO] [stdout] test http::client::tests::spotify_error_response_deserialization ... ok
[INFO] [stdout] test http::endpoints::tests::album_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::artist_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::audiobook_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::browse_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::chapter_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::episode_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::follow_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::markets_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::player_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::player_endpoints_with_params ... ok
[INFO] [stdout] test http::endpoints::tests::playlist_cover_image_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::queue_add_encodes_uri ... ok
[INFO] [stdout] test http::endpoints::tests::playlist_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::saved_episodes_contains_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::saved_albums_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::saved_audiobooks_contains_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::saved_audiobooks_ids_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::saved_episodes_ids_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::saved_shows_contains_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::saved_shows_ids_endpoint ... ok
[INFO] [stdout] test http::endpoints::tests::saved_tracks_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::search_includes_market ... ok
[INFO] [stdout] test http::endpoints::tests::track_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::show_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::user_endpoints ... ok
[INFO] [stdout] test http::endpoints::tests::user_playlist_endpoints ... ok
[INFO] [stdout] test io::common::tests::extract_artist_names_multiple ... ok
[INFO] [stdout] test io::common::tests::extract_artist_names_empty_array ... ok
[INFO] [stdout] test io::common::tests::extract_artist_names_missing ... ok
[INFO] [stdout] test io::common::tests::extract_artist_names_null ... ok
[INFO] [stdout] test http::endpoints::tests::search_encodes_query ... ok
[INFO] [stdout] test io::common::tests::extract_artist_names_single ... ok
[INFO] [stdout] test io::common::tests::format_duration_as_long ... ok
[INFO] [stdout] test io::common::tests::format_duration_as_long_with_seconds ... ok
[INFO] [stdout] test io::common::tests::format_duration_short_minutes_only ... ok
[INFO] [stdout] test io::common::tests::format_number_millions ... ok
[INFO] [stdout] test io::common::tests::format_number_small ... ok
[INFO] [stdout] test io::common::tests::get_score_missing ... ok
[INFO] [stdout] test io::common::tests::get_score_present ... ok
[INFO] [stdout] test io::common::tests::truncate_exact_length ... ok
[INFO] [stdout] test io::common::tests::truncate_long_string ... ok
[INFO] [stdout] test io::common::tests::truncate_short_string ... ok
[INFO] [stdout] test io::formatters::album::tests::format_album_detail_compilation ... ok
[INFO] [stdout] test io::formatters::album::tests::format_album_detail_full ... ok
[INFO] [stdout] test io::formatters::album::tests::format_album_detail_minimal ... ok
[INFO] [stdout] test io::formatters::album::tests::format_album_detail_single ... ok
[INFO] [stdout] test io::formatters::album::tests::format_album_detail_no_uri ... ok
[INFO] [stdout] test io::formatters::album::tests::format_album_detail_without_tracks ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_artist_detail_empty_genres ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_artist_detail_full ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_artist_detail_no_genres ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_top_artists_minimal ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_top_artists_with_data ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_artist_detail_minimal ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_top_artists_empty ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_chapters_no_chapter_number ... ok
[INFO] [stdout] test io::common::tests::get_score_non_numeric ... ok
[INFO] [stdout] test io::common::tests::format_duration_as_short ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_detail_full ... ok
[INFO] [stdout] test io::formatters::artist::tests::format_top_artists_many_genres ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_detail_long_description ... ok
[INFO] [stdout] test io::common::tests::format_duration_short_with_hours ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_detail_minimal ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_chapters_empty ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobooks_with_items ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_chapters_with_items ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobooks_wrapped ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobook_detail_no_authors ... ok
[INFO] [stdout] test io::common::tests::format_number_thousands ... ok
[INFO] [stdout] test io::formatters::category::tests::format_categories_minimal ... ok
[INFO] [stdout] test io::formatters::category::tests::format_categories_with_items ... ok
[INFO] [stdout] test io::formatters::audiobook::tests::format_audiobooks_empty ... ok
[INFO] [stdout] test io::formatters::category::tests::format_category_detail_minimal ... ok
[INFO] [stdout] test io::formatters::category::tests::format_category_detail_no_icons ... ok
[INFO] [stdout] test io::formatters::chapter::tests::format_chapter_detail_full ... ok
[INFO] [stdout] test io::formatters::category::tests::format_category_detail_empty_icons ... ok
[INFO] [stdout] test io::formatters::chapter::tests::format_chapter_detail_minimal ... ok
[INFO] [stdout] test io::formatters::category::tests::format_category_detail_full ... ok
[INFO] [stdout] test io::formatters::chapter::tests::format_chapter_detail_long_description ... ok
[INFO] [stdout] test io::formatters::chapter::tests::format_chapter_detail_short_duration ... ok
[INFO] [stdout] test io::formatters::chapter::tests::format_chapter_detail_no_uri ... ok
[INFO] [stdout] test io::formatters::chapter::tests::format_chapter_detail_no_chapter_number ... ok
[INFO] [stdout] test io::formatters::category::tests::format_categories_empty ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episode_detail_full ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episodes_minimal ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episode_detail_long_description ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episode_detail_minimal ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episode_detail_not_explicit ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episodes_empty ... ok
[INFO] [stdout] test io::formatters::library::tests::format_library_check_all_saved ... ok
[INFO] [stdout] test io::formatters::library::tests::format_library_check_empty ... ok
[INFO] [stdout] test io::formatters::library::tests::format_library_check_none_saved ... ok
[INFO] [stdout] test io::formatters::library::tests::format_saved_tracks_empty ... ok
[INFO] [stdout] test io::formatters::library::tests::format_saved_tracks_with_items ... ok
[INFO] [stdout] test io::formatters::pin::tests::format_pins_empty ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episodes_with_items ... ok
[INFO] [stdout] test io::formatters::episode::tests::format_episodes_wrapped ... ok
[INFO] [stdout] test io::formatters::library::tests::format_library_check_mixed ... ok
[INFO] [stdout] test io::formatters::library::tests::format_library_check_non_bool ... ok
[INFO] [stdout] test io::formatters::library::tests::format_saved_tracks_more_than_twenty ... ok
[INFO] [stdout] test io::formatters::library::tests::format_saved_tracks_no_track_field ... ok
[INFO] [stdout] test io::formatters::pin::tests::format_pins_empty_tags_array ... ok
[INFO] [stdout] test io::formatters::player::tests::format_devices_multiple ... ok
[INFO] [stdout] test io::formatters::pin::tests::format_pins_minimal_data ... ok
[INFO] [stdout] test io::formatters::pin::tests::format_pins_multiple ... ok
[INFO] [stdout] test io::formatters::pin::tests::format_pins_single_with_tags ... ok
[INFO] [stdout] test io::formatters::pin::tests::format_pins_single_without_tags ... ok
[INFO] [stdout] test io::formatters::player::tests::format_devices_empty ... ok
[INFO] [stdout] test io::formatters::player::tests::format_devices_minimal ... ok
[INFO] [stdout] test io::formatters::player::tests::format_player_status_paused ... ok
[INFO] [stdout] test io::formatters::player::tests::format_player_status_playing ... ok
[INFO] [stdout] test io::formatters::player::tests::format_devices_without_volume ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlist_detail_empty_description ... ok
[INFO] [stdout] test io::formatters::player::tests::format_queue_large ... ok
[INFO] [stdout] test io::formatters::player::tests::format_queue_empty ... ok
[INFO] [stdout] test io::formatters::player::tests::format_queue_no_currently_playing ... ok
[INFO] [stdout] test io::formatters::player::tests::format_queue_with_items ... ok
[INFO] [stdout] test io::formatters::player::tests::format_player_status_minimal ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlist_detail_full ... ok
[INFO] [stdout] test io::formatters::player::tests::format_player_status_with_shuffle_repeat ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlist_detail_no_tracks ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlists_empty ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlist_detail_many_tracks ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlist_detail_minimal ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlists_minimal_data ... ok
[INFO] [stdout] test io::formatters::search::tests::format_search_results_empty ... ok
[INFO] [stdout] test io::formatters::playlist::tests::format_playlists_with_items ... ok
[INFO] [stdout] test io::formatters::search::tests::format_search_results_with_pins ... ok
[INFO] [stdout] test io::formatters::search::tests::format_search_results_with_tracks ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_artists ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_albums ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_empty ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_playlists ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_tracks ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_playlists_without_id ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_detail_not_explicit ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_detail_full ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_episodes_empty ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_detail_long_description ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_detail_minimal ... ok
[INFO] [stdout] test io::formatters::show::tests::format_shows_empty ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_episodes_minimal ... ok
[INFO] [stdout] test io::formatters::show::tests::format_shows_with_items ... ok
[INFO] [stdout] test io::formatters::show::tests::format_show_episodes_with_items ... ok
[INFO] [stdout] test io::formatters::show::tests::format_shows_wrapped ... ok
[INFO] [stdout] test io::formatters::track::tests::format_artist_top_tracks_with_data ... ok
[INFO] [stdout] test io::formatters::track::tests::format_artist_top_tracks_empty ... ok
[INFO] [stdout] test io::formatters::search::tests::format_search_results_nested_spotify ... ok
[INFO] [stdout] test io::formatters::track::tests::format_artist_top_tracks_minimal_data ... ok
[INFO] [stdout] test io::formatters::track::tests::format_play_history_empty ... ok
[INFO] [stdout] test io::formatters::track::tests::format_play_history_more_than_ten ... ok
[INFO] [stdout] test io::formatters::search::tests::format_spotify_search_all_types ... ok
[INFO] [stdout] test io::formatters::search::tests::format_search_results_no_matches ... ok
[INFO] [stdout] test io::formatters::track::tests::format_play_history_with_tracks ... ok
[INFO] [stdout] test io::formatters::track::tests::format_top_tracks_empty ... ok
[INFO] [stdout] test io::formatters::user::tests::format_user_profile_large_followers ... ok
[INFO] [stdout] test io::formatters::track::tests::format_top_tracks_with_data ... ok
[INFO] [stdout] test io::formatters::user::tests::format_user_profile_minimal ... ok
[INFO] [stdout] test io::formatters::track::tests::format_track_detail_full ... ok
[INFO] [stdout] test io::formatters::user::tests::format_user_profile_full ... ok
[INFO] [stdout] test io::formatters::track::tests::format_track_detail_without_explicit ... ok
[INFO] [stdout] test io::formatters::track::tests::format_track_detail_minimal ... ok
[INFO] [stdout] test io::formatters::user::tests::format_user_profile_without_country ... ok
[INFO] [stdout] test io::formatters::track::tests::format_track_detail_multiple_artists ... ok
[INFO] [stdout] test io::formatters::user::tests::format_user_profile_without_email ... ok
[INFO] [stdout] test io::output::tests::err_with_details_includes_details ... ok
[INFO] [stdout] test io::output::tests::error_response_includes_error_detail ... ok
[INFO] [stdout] test io::output::tests::error_kind_serializes_to_snake_case ... ok
[INFO] [stdout] test io::output::tests::all_error_kinds_as_str ... ok
[INFO] [stdout] test io::output::tests::from_http_error_bad_request ... ok
[INFO] [stdout] test io::output::tests::error_response_has_no_payload_kind ... ok
[INFO] [stdout] test io::output::tests::from_http_error_bad_gateway ... ok
[INFO] [stdout] test io::output::tests::from_http_error_api_includes_details ... ok
[INFO] [stdout] test io::output::tests::from_http_error_api_error ... ok
[INFO] [stdout] test io::output::tests::from_http_error_forbidden ... ok
[INFO] [stdout] test io::output::tests::from_http_error_not_found ... ok
[INFO] [stdout] test io::output::tests::from_http_error_rate_limited ... ok
[INFO] [stdout] test io::output::tests::from_http_error_unauthorized ... ok
[INFO] [stdout] test io::output::tests::from_http_error_service_unavailable ... ok
[INFO] [stdout] test io::output::tests::payload_skipped_when_none ... ok
[INFO] [stdout] test io::output::tests::print_human_error_with_details ... ok
[INFO] [stdout] test io::output::tests::error_kind_display ... ok
[INFO] [stdout] test io::output::tests::print_human_success_without_payload ... ok
[INFO] [stdout] test io::output::tests::print_human_error_without_details ... ok
[INFO] [stdout] test io::output::tests::print_human_success_with_payload ... ok
[INFO] [stdout] test io::output::tests::print_human_with_typed_payload ... ok
[INFO] [stdout] test io::output::tests::print_json_outputs_valid_json ... ok
[INFO] [stdout] test io::output::tests::status_serialization ... ok
[INFO] [stdout] test io::output::tests::success_typed_includes_payload_kind ... ok
[INFO] [stdout] test io::output::tests::success_response_serializes ... ok
[INFO] [stdout] test io::output::tests::success_typed_serializes_payload_kind ... ok
[INFO] [stdout] test io::output::tests::success_without_typed_has_no_payload_kind ... ok
[INFO] [stdout] test io::registry::lists::tests::artist_top_tracks_formatter_matches ... ok
[INFO] [stdout] test io::registry::lists::tests::artist_top_tracks_format_runs ... ok
[INFO] [stdout] test io::registry::lists::tests::formatter_names ... ok
[INFO] [stdout] test io::registry::lists::tests::library_check_does_not_match_empty_array ... ok
[INFO] [stdout] test io::output::tests::from_http_error_unusual_status ... ok
[INFO] [stdout] test io::registry::lists::tests::library_check_does_not_match_non_array ... ok
[INFO] [stdout] test io::output::tests::more_payload_kind_variants ... ok
[INFO] [stdout] test io::output::tests::payload_included_when_present ... ok
[INFO] [stdout] test io::output::tests::payload_kind_variants ... ok
[INFO] [stdout] test io::registry::lists::tests::library_check_does_not_match_non_boolean_array ... ok
[INFO] [stdout] test io::registry::lists::tests::playlists_format_runs ... ok
[INFO] [stdout] test io::registry::lists::tests::library_check_format_runs ... ok
[INFO] [stdout] test io::registry::lists::tests::library_check_matches_boolean_array ... ok
[INFO] [stdout] test io::registry::lists::tests::top_artists_format_runs ... ok
[INFO] [stdout] test io::registry::lists::tests::playlist_formatter_supports_playlist_list ... ok
[INFO] [stdout] test io::registry::lists::tests::top_artists_formatter_matches ... ok
[INFO] [stdout] test io::registry::lists::tests::saved_tracks_formatter_matches ... ok
[INFO] [stdout] test io::registry::lists::tests::playlists_formatter_matches ... ok
[INFO] [stdout] test io::registry::lists::tests::saved_tracks_does_not_match_without_added_at ... ok
[INFO] [stdout] test io::registry::lists::tests::playlists_matches_with_owner ... ok
[INFO] [stdout] test io::registry::lists::tests::saved_tracks_format_runs ... ok
[INFO] [stdout] test io::registry::lists::tests::top_artists_formatter_supports_multiple_kinds ... ok
[INFO] [stdout] test io::registry::lists::tests::top_tracks_format_runs ... ok
[INFO] [stdout] test io::registry::lists::tests::top_tracks_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::audiobook_chapters_does_not_match_empty ... ok
[INFO] [stdout] test io::registry::media::tests::audiobook_chapters_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::chapter_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::episode_detail_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::audiobook_chapters_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::episode_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::saved_audiobooks_does_not_match_empty ... ok
[INFO] [stdout] test io::registry::media::tests::formatter_names ... ok
[INFO] [stdout] test io::registry::media::tests::saved_audiobooks_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::saved_audiobooks_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::audiobook_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::audiobook_detail_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::saved_episodes_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::saved_episodes_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::chapter_detail_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::saved_shows_formatter_matches ... ok
[INFO] [stdout] test io::registry::media::tests::show_episodes_does_not_match_with_artists ... ok
[INFO] [stdout] test io::registry::media::tests::saved_shows_does_not_match_empty ... ok
[INFO] [stdout] test io::registry::media::tests::show_episodes_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::saved_shows_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::show_detail_format_runs ... ok
[INFO] [stdout] test io::registry::media::tests::show_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::player::tests::devices_format_runs ... ok
[INFO] [stdout] test io::registry::player::tests::devices_formatter_matches ... ok
[INFO] [stdout] test io::registry::player::tests::play_history_does_not_match_without_played_at ... ok
[INFO] [stdout] test io::registry::player::tests::play_history_format_runs ... ok
[INFO] [stdout] test io::registry::player::tests::player_status_matches_payload_with_item ... ok
[INFO] [stdout] test io::registry::media::tests::show_episodes_formatter_matches ... ok
[INFO] [stdout] test io::registry::player::tests::formatter_names ... ok
[INFO] [stdout] test io::registry::player::tests::play_history_formatter_matches ... ok
[INFO] [stdout] test io::registry::player::tests::player_status_format_with_null_item ... ok
[INFO] [stdout] test io::registry::player::tests::player_status_does_not_match_without_item ... ok
[INFO] [stdout] test io::registry::player::tests::player_status_format_runs ... ok
[INFO] [stdout] test io::registry::player::tests::queue_formatter_supports_kind ... ok
[INFO] [stdout] test io::registry::player::tests::player_status_formatter_supports_kind ... ok
[INFO] [stdout] test io::registry::player::tests::queue_format_runs ... ok
[INFO] [stdout] test io::registry::resources::tests::album_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::artist_detail_format_runs ... ok
[INFO] [stdout] test io::registry::player::tests::queue_does_not_match_without_queue ... ok
[INFO] [stdout] test io::registry::resources::tests::album_detail_format_runs ... ok
[INFO] [stdout] test io::registry::resources::tests::category_detail_format_runs ... ok
[INFO] [stdout] test io::registry::resources::tests::artist_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::category_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::player::tests::queue_matches_payload_with_currently_playing_and_queue ... ok
[INFO] [stdout] test io::registry::resources::tests::artist_detail_supports_related_artists ... ok
[INFO] [stdout] test io::registry::resources::tests::category_list_format_runs ... ok
[INFO] [stdout] test io::registry::resources::tests::category_list_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::category_detail_does_not_match_with_owner ... ok
[INFO] [stdout] test io::registry::resources::tests::playlist_detail_format_runs ... ok
[INFO] [stdout] test io::registry::resources::tests::playlist_detail_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::track_detail_format_runs ... ok
[INFO] [stdout] test io::registry::resources::tests::track_detail_matches_payload ... ok
[INFO] [stdout] test io::registry::resources::tests::track_formatter_supports_kind ... ok
[INFO] [stdout] test io::registry::search::tests::combined_search_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::formatter_names ... ok
[INFO] [stdout] test io::registry::resources::tests::user_profile_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::user_profile_format_runs ... ok
[INFO] [stdout] test io::registry::search::tests::pins_format_handles_empty_array ... ok
[INFO] [stdout] test io::registry::search::tests::pins_supports_kind ... ok
[INFO] [stdout] test io::registry::search::tests::pins_format_runs ... ok
[INFO] [stdout] test io::registry::search::tests::pins_formatter_matches ... ok
[INFO] [stdout] test io::registry::resources::tests::track_detail_does_not_match_incomplete ... ok
[INFO] [stdout] test io::registry::search::tests::combined_search_supports_kind ... ok
[INFO] [stdout] test io::registry::search::tests::formatter_names ... ok
[INFO] [stdout] test io::registry::search::tests::spotify_search_format_runs ... ok
[INFO] [stdout] test io::registry::search::tests::spotify_search_formatter_matches ... ok
[INFO] [stdout] test io::registry::search::tests::spotify_search_supports_kind ... ok
[INFO] [stdout] test io::registry::search::tests::combined_search_format_runs ... ok
[INFO] [stdout] test io::registry::tests::format_payload_works ... ok
[INFO] [stdout] test io::registry::tests::formatter_registry_has_formatters ... ok
[INFO] [stdout] test io::registry::tests::registry_default_same_as_new ... ok
[INFO] [stdout] test io::registry::tests::global_registry_accessible ... ok
[INFO] [stdout] test io::registry::tests::default_supported_kinds_is_empty ... ok
[INFO] [stdout] test io::registry::tests::format_payload_with_kind_works ... ok
[INFO] [stdout] test io::registry::tests::registry_format_with_kind_uses_kind_matching ... ok
[INFO] [stdout] test io::registry::tests::registry_format_with_kind_falls_back_to_payload_matching ... ok
[INFO] [stdout] test io::registry::tests::registry_format_with_unknown_prints_message ... ok
[INFO] [stdout] test logging::tests::log_config_builder ... ok
[INFO] [stdout] test logging::tests::log_config_debug ... ok
[INFO] [stdout] test logging::tests::log_config_clone ... ok
[INFO] [stdout] test logging::tests::log_config_format_method_is_chainable ... ok
[INFO] [stdout] test logging::tests::log_format_debug ... ok
[INFO] [stdout] test logging::tests::log_config_new_sets_verbosity ... ok
[INFO] [stdout] test logging::tests::log_format_default_is_pretty ... ok
[INFO] [stdout] test logging::tests::log_format_copy ... ok
[INFO] [stdout] test logging::tests::log_format_from_str_error_message ... ok
[INFO] [stdout] test logging::tests::log_format_display ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_error_display_denied ... ok
[INFO] [stdout] test logging::tests::log_format_from_str ... ok
[INFO] [stdout] test logging::tests::log_config_default ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_error_display_invalid_request ... ok
[INFO] [stdout] test logging::tests::log_format_eq ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_error_display_missing_code ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_error_display_server_start ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_error_display_timeout ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_path_constant ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_result_state_can_be_none ... ok
[INFO] [stdout] test oauth::callback_server::tests::callback_result_stores_code_and_state ... ok
[INFO] [stdout] test oauth::callback_server::tests::can_customize_port ... ok
[INFO] [stdout] test oauth::callback_server::tests::chained_with_timeout ... ok
[INFO] [stdout] test oauth::callback_server::tests::error_html_contains_message ... ok
[INFO] [stdout] test oauth::callback_server::tests::redirect_uri_uses_correct_format ... ok
[INFO] [stdout] test oauth::callback_server::tests::with_timeout_sets_custom_timeout ... ok
[INFO] [stdout] test oauth::callback_server::tests::success_html_contains_authenticated ... ok
[INFO] [stdout] test oauth::callback_server::tests::default_port_constant ... ok
[INFO] [stdout] test oauth::callback_server::tests::default_timeout_is_five_minutes ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_error_display_callback ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_error_display_token_parse ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_error_from_callback_error ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_flow_new_creates_with_defaults ... ok
[INFO] [stdout] test oauth::flow::tests::build_auth_url_includes_pkce_challenge ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_flow_port_updates_redirect_uri ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_flow_with_port ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_flow_with_scopes ... ok
[INFO] [stdout] test oauth::flow::tests::build_auth_url_contains_required_params ... ok
[INFO] [stdout] test oauth::flow::tests::default_scopes_contains_required_scopes ... ok
[INFO] [stdout] test oauth::flow::tests::default_scopes_count ... ok
[INFO] [stdout] test oauth::pkce::tests::challenge_is_base64url_encoded ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_error_display_browser ... ok
[INFO] [stdout] test oauth::flow::tests::oauth_flow_chaining_works ... ok
[INFO] [stdout] test oauth::token::tests::expired_token_is_expired ... ok
[INFO] [stdout] test oauth::token::tests::fresh_token_is_not_expired ... ok
[INFO] [stdout] test oauth::token::tests::seconds_until_expiry_is_positive_for_fresh_token ... ok
[INFO] [stdout] test oauth::pkce::tests::challenge_is_sha256_of_verifier ... ok
[INFO] [stdout] test oauth::pkce::tests::verifier_has_correct_length ... ok
[INFO] [stdout] test oauth::token::tests::seconds_until_expiry_negative_for_expired ... ok
[INFO] [stdout] test oauth::token::tests::token_expiring_soon_is_expired ... ok
[INFO] [stdout] test oauth::token::tests::token_from_response_sets_fields ... ok
[INFO] [stdout] test oauth::token::tests::token_deserializes_from_json ... ok
[INFO] [stdout] test oauth::token::tests::token_from_response_without_refresh_token ... ok
[INFO] [stdout] test oauth::pkce::tests::verifier_uses_valid_characters ... ok
[INFO] [stdout] test oauth::token::tests::token_serializes_to_json ... ok
[INFO] [stdout] test rpc::protocol::tests::parse_notification ... ok
[INFO] [stdout] test rpc::protocol::tests::serialize_error_response ... ok
[INFO] [stdout] test rpc::protocol::tests::parse_request_with_params ... ok
[INFO] [stdout] test rpc::dispatch::tests::test_dispatcher_default ... ok
[INFO] [stdout] test rpc::dispatch::tests::test_player_transfer_missing_device ... ok
[INFO] [stdout] test rpc::dispatch::tests::test_unknown_method ... ok
[INFO] [stdout] test rpc::dispatch::tests::test_ping ... ok
[INFO] [stdout] test rpc::dispatch::tests::test_version ... ok
[INFO] [stdout] test rpc::protocol::tests::serialize_success_response ... ok
[INFO] [stdout] test rpc::protocol::tests::serialize_notification ... ok
[INFO] [stdout] test storage::config::tests::config_defaults_when_search_section_missing ... ok
[INFO] [stdout] test storage::config::tests::config_with_search_settings ... ok
[INFO] [stdout] test storage::config::tests::config_with_fuzzy_settings ... ok
[INFO] [stdout] test storage::config::tests::missing_client_id_fails ... ok
[INFO] [stdout] test storage::config::tests::search_config_default_values ... ok
[INFO] [stdout] test storage::config::tests::parse_valid_config ... ok
[INFO] [stdout] test storage::config::tests::fuzzy_config_default_values ... ok
[INFO] [stdout] test storage::config::tests::config_error_display ... ok
[INFO] [stdout] test storage::config::tests::spotify_config_deserializes ... ok
[INFO] [stdout] test storage::config::tests::token_storage_backend_default ... ok
[INFO] [stdout] test storage::config::tests::token_storage_file_option ... ok
[INFO] [stdout] test storage::config::tests::token_storage_defaults_to_keyring ... ok
[INFO] [stdout] test storage::config::tests::token_storage_keyring_option ... ok
[INFO] [stdout] test storage::fuzzy::tests::case_insensitive_matching ... ok
[INFO] [stdout] test storage::fuzzy::tests::levenshtein_basic ... ok
[INFO] [stdout] test storage::fuzzy::tests::levenshtein_empty_strings ... ok
[INFO] [stdout] test storage::fuzzy::tests::contains_partial_match ... ok
[INFO] [stdout] test storage::fuzzy::tests::custom_config_values ... ok
[INFO] [stdout] test storage::fuzzy::tests::levenshtein_longer_strings ... ok
[INFO] [stdout] test storage::fuzzy::tests::exact_match_highest_score ... ok
[INFO] [stdout] test storage::fuzzy::tests::starts_with_scores_high ... ok
[INFO] [stdout] test storage::fuzzy::tests::zero_score_for_unrelated ... ok
[INFO] [stdout] test storage::fuzzy::tests::word_match_scoring ... ok
[INFO] [stdout] test storage::keyring::tests::keyring_error_display ... ok
[INFO] [stdout] test storage::keyring::tests::keyring_error_serialize ... ok
[INFO] [stdout] test storage::paths::tests::token_file_is_json ... ok
[INFO] [stdout] test storage::fuzzy::tests::levenshtein_single_char ... ok
[INFO] [stdout] test storage::fuzzy::tests::no_match_scores_low ... ok
[INFO] [stdout] test storage::fuzzy::tests::similarity_bonus_applied ... ok
[INFO] [stdout] test storage::paths::tests::config_dir_ends_with_app_name ... ok
[INFO] [stdout] test storage::paths::tests::config_file_is_toml ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::exact_match_case_insensitive ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::exact_match_returns_max_score ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::no_match_returns_low_score ... ok
[INFO] [stdout] test storage::paths::tests::unix_uses_xdg_config ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::tag_contains_adds_bonus ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::similar_aliases_get_levenshtein_bonus ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::contains_adds_bonus ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::empty_tags_still_works ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::starts_with_adds_bonus ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::multiple_tags_matching ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::tag_exact_match_adds_bonus ... ok
[INFO] [stdout] test storage::pins::fuzzy::tests::word_match_adds_bonus ... ok
[INFO] [stdout] test storage::pins::pin::tests::extract_id_from_spotify_uri ... ok
[INFO] [stdout] test storage::pins::pin::tests::extract_id_from_spotify_url ... ok
[INFO] [stdout] test storage::pins::pin::tests::pin_deserializes_from_json ... ok
[INFO] [stdout] test storage::pins::pin::tests::pin_serializes_to_json ... ok
[INFO] [stdout] test storage::pins::pin::tests::pin_uri_playlist ... ok
[INFO] [stdout] test storage::pins::pin::tests::pin_uri_album ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::copy_trait ... ok
[INFO] [stdout] test storage::pins::pin::tests::pin_uri_track ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::equality ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::as_str_all_types ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::from_str_invalid ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::from_str_case_insensitive ... ok
[INFO] [stdout] test storage::pins::pin::tests::pin_new ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::from_str_valid ... ok
[INFO] [stdout] test storage::pins::pin::tests::extract_id_from_plain_id ... ok
[INFO] [stdout] test storage::pins::pin::tests::extract_id_from_spotify_url_with_query ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_error_display ... ok
[INFO] [stdout] test storage::pins::resource_type::tests::serialize_deserialize ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_find_by_alias_not_found ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_find_by_alias ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_loads_existing_file ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_add_duplicate_fails ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_add_and_list ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_persistence ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_all ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_fuzzy_search_by_tag ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_fuzzy_search ... ok
[INFO] [stdout] test storage::token_store::tests::delete_nonexistent_is_ok ... ok
[INFO] [stdout] test storage::token_store::tests::exists_returns_false_when_no_token ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_remove_not_found ... ok
[INFO] [stdout] test storage::token_store::tests::path_returns_correct_path ... ok
[INFO] [stdout] test storage::token_store::tests::token_store_error_display ... ok
[INFO] [stdout] test storage::token_store::tests::load_nonexistent_returns_not_found ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_remove_by_alias ... ok
[INFO] [stdout] test storage::token_store::tests::exists_returns_true_after_save ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_list_with_filter ... ok
[INFO] [stdout] test storage::token_store::tests::save_and_load_token ... ok
[INFO] [stdout] test storage::unified_token::tests::unified_token_error_display ... ok
[INFO] [stdout] test storage::unified_token::tests::exists_returns_false_when_empty ... ok
[INFO] [stdout] test types::album::tests::album_full_deserializes ... ok
[INFO] [stdout] test storage::unified_token::tests::file_backend_creates_successfully ... ok
[INFO] [stdout] test types::album::tests::album_artist_name ... ok
[INFO] [stdout] test types::album::tests::album_image_url ... ok
[INFO] [stdout] test storage::token_store::tests::save_sets_secure_permissions ... ok
[INFO] [stdout] test types::album::tests::album_release_year ... ok
[INFO] [stdout] test types::album::tests::album_release_year_none ... ok
[INFO] [stdout] test types::album::tests::album_simplified_artist_name ... ok
[INFO] [stdout] test storage::pins::store::tests::pin_store_remove_by_id ... ok
[INFO] [stdout] test types::album::tests::album_simplified_artist_name_none ... ok
[INFO] [stdout] test types::album::tests::album_simplified_deserializes ... ok
[INFO] [stdout] test types::album::tests::album_simplified_image_url ... ok
[INFO] [stdout] test types::album::tests::saved_album_deserializes ... ok
[INFO] [stdout] test types::artist::tests::artist_image_url_returns_first_image ... ok
[INFO] [stdout] test types::artist::tests::artist_image_url_returns_none_when_no_images ... ok
[INFO] [stdout] test types::artist::tests::artist_simplified_deserializes ... ok
[INFO] [stdout] test types::artist::tests::artist_full_deserializes ... ok
[INFO] [stdout] test types::album::tests::album_simplified_image_url_none ... ok
[INFO] [stdout] test types::artist::tests::followed_artists_response_deserializes ... ok
[INFO] [stdout] test types::album::tests::album_type_deserializes ... ok
[INFO] [stdout] test types::artist::tests::related_artists_response_deserializes ... ok
[INFO] [stdout] test types::artist::tests::artist_top_tracks_response_deserializes ... ok
[INFO] [stdout] test types::common::tests::cursors_deserializes ... ok
[INFO] [stdout] test types::common::tests::external_ids_deserializes ... ok
[INFO] [stdout] test types::common::tests::external_urls_deserializes ... ok
[INFO] [stdout] test types::common::tests::copyright_deserializes ... ok
[INFO] [stdout] test types::common::tests::linked_from_deserializes ... ok
[INFO] [stdout] test types::common::tests::image_deserializes ... ok
[INFO] [stdout] test types::common::tests::cursored_deserializes ... ok
[INFO] [stdout] test types::common::tests::followers_deserializes ... ok
[INFO] [stdout] test types::common::tests::paginated_deserializes ... ok
[INFO] [stdout] test types::common::tests::image_deserializes_with_null_dimensions ... ok
[INFO] [stdout] test types::common::tests::restrictions_deserializes ... ok
[INFO] [stdout] test types::common::tests::resume_point_deserializes ... ok
[INFO] [stdout] test types::playback::tests::device_type_display_unknown ... ok
[INFO] [stdout] test types::playback::tests::device_deserializes ... ok
[INFO] [stdout] test types::playback::tests::play_history_deserializes ... ok
[INFO] [stdout] test types::playback::tests::device_type_display_known_types ... ok
[INFO] [stdout] test types::common::tests::paginated_with_next_prev ... ok
[INFO] [stdout] test types::playback::tests::playback_context_deserializes ... ok
[INFO] [stdout] test types::playback::tests::playback_state_deserializes ... ok
[INFO] [stdout] test types::playback::tests::playback_state_duration_str_no_item ... ok
[INFO] [stdout] test types::playback::tests::playback_state_duration_str ... ok
[INFO] [stdout] test types::playback::tests::playback_state_device_name ... ok
[INFO] [stdout] test types::playback::tests::playback_state_progress_str_zero ... ok
[INFO] [stdout] test types::playback::tests::playback_state_progress_str ... ok
[INFO] [stdout] test types::playback::tests::playback_actions_deserializes ... ok
[INFO] [stdout] test types::playback::tests::playback_state_track_name_none ... ok
[INFO] [stdout] test types::playback::tests::devices_response_deserializes ... ok
[INFO] [stdout] test types::playback::tests::playback_state_track_name ... ok
[INFO] [stdout] test types::playlist::tests::playlist_owner_name_none_without_owner ... ok
[INFO] [stdout] test types::playback::tests::queue_response_deserializes ... ok
[INFO] [stdout] test types::playback::tests::recently_played_cursors_deserializes ... ok
[INFO] [stdout] test types::playback::tests::recently_played_response_deserializes ... ok
[INFO] [stdout] test types::playlist::tests::category_playlists_deserializes ... ok
[INFO] [stdout] test types::playlist::tests::playlist_full_deserializes ... ok
[INFO] [stdout] test types::playlist::tests::playlist_image_url_none_when_empty ... ok
[INFO] [stdout] test types::playlist::tests::playlist_image_url_returns_first ... ok
[INFO] [stdout] test types::playlist::tests::playlist_simplified_track_count_zero_when_none ... ok
[INFO] [stdout] test types::playlist::tests::playlist_track_count_from_tracks ... ok
[INFO] [stdout] test types::playlist::tests::playlist_owner_name_prefers_display_name ... ok
[INFO] [stdout] test types::playlist::tests::playlist_track_count_zero_without_tracks ... ok
[INFO] [stdout] test types::playlist::tests::playlist_simplified_deserializes ... ok
[INFO] [stdout] test types::playlist::tests::playlist_simplified_image_url_none_without_images ... ok
[INFO] [stdout] test types::playlist::tests::playlist_simplified_image_url ... ok
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/spotify_cli-e48bebf827eee6af)
[INFO] [stdout] test types::track::tests::track_artist_name ... ok
[INFO] [stdout] test types::track::tests::saved_track_deserializes ... ok
[INFO] [stdout] test types::track::tests::track_album_name ... ok
[INFO] [stdout] test types::track::tests::track_album_name_none ... ok
[INFO] [stdout] test types::playlist::tests::playlist_track_deserializes ... ok
[INFO] [stdout] test types::playlist::tests::playlist_tracks_ref_deserializes ... ok
[INFO] [stdout] test types::track::tests::track_artist_names_multiple ... ok
[INFO] [stdout] test types::track::tests::track_artist_names_empty ... ok
[INFO] [stdout] test types::user::tests::explicit_content_deserializes ... ok
[INFO] [stdout] test types::track::tests::track_duration_str ... ok
[INFO] [stdout] test types::track::tests::track_full_deserializes ... ok
[INFO] [stdout] test types::track::tests::track_image_url ... ok
[INFO] [stdout] test types::track::tests::track_simplified_artist_name ... ok
[INFO] [stdout] test types::track::tests::track_simplified_artist_name_none ... ok
[INFO] [stdout] test types::track::tests::track_simplified_deserializes ... ok
[INFO] [stdout] test types::track::tests::track_simplified_duration_str ... ok
[INFO] [stdout] test types::user::tests::top_artists_response_deserializes ... ok
[INFO] [stdout] test types::user::tests::top_tracks_response_deserializes ... ok
[INFO] [stdout] test types::user::tests::user_private_deserializes ... ok
[INFO] [stdout] test types::user::tests::user_private_image_url_none_when_empty ... ok
[INFO] [stdout] test types::user::tests::user_private_image_url_returns_first ... ok
[INFO] [stdout] test types::user::tests::user_private_is_premium_false_for_free ... ok
[INFO] [stdout] test types::user::tests::user_private_is_premium_false_when_none ... ok
[INFO] [stdout] test types::user::tests::user_public_deserializes ... ok
[INFO] [stdout] test types::user::tests::user_public_image_url ... ok
[INFO] [stdout] test types::user::tests::user_public_image_url_none_when_empty ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 605 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]      Running tests/cli_tests.rs (/opt/rustwide/target/debug/deps/cli_tests-cedef12b2b9b9ac8)
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 32 tests
[INFO] [stdout] test auth_help_shows_subcommands ... ok
[INFO] [stdout] test audiobook_help_shows_subcommands ... ok
[INFO] [stdout] test album_help_shows_subcommands ... ok
[INFO] [stdout] test category_help_shows_subcommands ... ok
[INFO] [stdout] test episode_help_shows_subcommands ... ok
[INFO] [stdout] test follow_help_shows_subcommands ... ok
[INFO] [stdout] test info_help_shows_subcommands ... ok
[INFO] [stdout] test help_displays_usage ... ok
[INFO] [stdout] test invalid_subcommand_fails ... ok
[INFO] [stdout] test json_flag_is_global ... ok
[INFO] [stdout] test help_shows_commands ... ok
[INFO] [stdout] test info_artist_help_shows_views ... ok
[INFO] [stdout] test library_help_shows_subcommands ... ok
[INFO] [stdout] test pin_add_requires_arguments ... ok
[INFO] [stdout] test pin_help_shows_subcommands ... ok
[INFO] [stdout] test player_repeat_help_shows_modes ... ok
[INFO] [stdout] test markets_command_exists ... ok
[INFO] [stdout] test playlist_help_shows_subcommands ... ok
[INFO] [stdout] test player_help_shows_subcommands ... ok
[INFO] [stdout] test player_volume_help_shows_range ... ok
[INFO] [stdout] test playlist_list_help_shows_pagination ... ok
[INFO] [stdout] test search_help_shows_options ... ok
[INFO] [stdout] test search_empty_query_shows_error ... ok
[INFO] [stdout] test search_help_shows_filters ... ok
[INFO] [stdout] test user_help_shows_subcommands ... ok
[INFO] [stdout] test user_top_help_shows_options ... ok
[INFO] [stdout] test show_help_shows_subcommands ... ok
[INFO] [stdout] test verbose_flag_is_global ... ok
[INFO] [stdout] test completions_bash_works ... ok
[INFO] [stdout] test completions_fish_works ... ok
[INFO] [stdout] test subcommand_help_works ... ok
[INFO] [stderr]      Running tests/command_tests.rs (/opt/rustwide/target/debug/deps/command_tests-df6c7bbaa09132c0)
[INFO] [stdout] test completions_zsh_works ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 51 tests
[INFO] [stdout] test albums::get_album_tracks_returns_tracks ... ok
[INFO] [stdout] test albums::get_album_not_found ... ok
[INFO] [stdout] test auth::exchange_code_invalid_code ... ok
[INFO] [stdout] test albums::get_album_returns_album_details ... ok
[INFO] [stdout] test artists::get_artists_albums_returns_albums ... ok
[INFO] [stdout] test artists::get_artist_returns_details ... ok
[INFO] [stdout] test auth::refresh_token_server_error ... ok
[INFO] [stdout] test auth::refresh_token_success ... ok
[INFO] [stdout] test auth::refresh_token_returns_new_refresh_token ... ok
[INFO] [stdout] test albums::get_new_releases_returns_albums ... ok
[INFO] [stdout] test artists::get_artist_top_tracks_returns_tracks ... ok
[INFO] [stdout] test auth::refresh_token_invalid_token ... ok
[INFO] [stdout] test auth::exchange_code_success ... ok
[INFO] [stdout] test albums::get_saved_albums_returns_list ... ok
[INFO] [stdout] test error_handling::api_error_with_message ... ok
[INFO] [stdout] test auth::exchange_code_invalid_verifier ... ok
[INFO] [stdout] test auth::refresh_token_without_new_refresh ... ok
[INFO] [stdout] test library::remove_tracks_success ... ok
[INFO] [stdout] test library::check_saved_tracks_returns_booleans ... ok
[INFO] [stdout] test library::get_saved_tracks_with_pagination ... ok
[INFO] [stdout] test error_handling::not_found_error ... ok
[INFO] [stdout] test error_handling::unauthorized_error ... ok
[INFO] [stdout] test library::get_saved_tracks_returns_tracks ... ok
[INFO] [stdout] test error_handling::forbidden_error ... ok
[INFO] [stdout] test player::get_playback_state_no_active_device ... ok
[INFO] [stdout] test player::get_queue_returns_queue ... ok
[INFO] [stdout] test player::pause_playback_success ... ok
[INFO] [stdout] test player::skip_previous_success ... ok
[INFO] [stdout] test player::set_volume_success ... ok
[INFO] [stdout] test player::start_playback_with_context ... ok
[INFO] [stdout] test player::start_playback_success ... ok
[INFO] [stdout] test library::save_tracks_success ... ok
[INFO] [stdout] test player::skip_next_success ... ok
[INFO] [stdout] test player::start_playback_with_uris ... ok
[INFO] [stdout] test playlists::create_public_playlist ... ok
[INFO] [stdout] test player::get_recently_played_returns_history ... ok
[INFO] [stdout] test playlists::add_items_to_playlist_returns_snapshot ... ok
[INFO] [stdout] test playlists::get_playlist_returns_details ... ok
[INFO] [stdout] test playlists::create_playlist_returns_new_playlist ... ok
[INFO] [stdout] test search_tests::search_with_no_results ... ok
[INFO] [stdout] test player::get_devices_returns_list ... ok
[INFO] [stdout] test search_tests::search_multiple_types_returns_results ... ok
[INFO] [stdout] test player::get_playback_state_returns_state ... ok
[INFO] [stdout] test search_tests::search_tracks_returns_results ... ok
[INFO] [stdout] test playlists::get_user_playlists_returns_list ... ok
[INFO] [stdout] test tracks::get_track_returns_details ... ok
[INFO] [stdout] test user::get_top_tracks_returns_list ... ok
[INFO] [stdout] test tracks::get_track_not_found ... ok
[INFO] [stdout] test user::get_top_artists_returns_list ... ok
[INFO] [stdout] test user::get_current_user_returns_profile ... ok
[INFO] [stdout] test error_handling::rate_limited_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 51 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.04s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/endpoint_tests.rs (/opt/rustwide/target/debug/deps/endpoint_tests-8986117ee3dd43ab)
[INFO] [stdout] 
[INFO] [stdout] running 66 tests
[INFO] [stdout] test artist_endpoints::test_get_artist_top_tracks ... ok
[INFO] [stdout] test album_endpoints::test_save_albums ... ok
[INFO] [stdout] test album_endpoints::test_remove_saved_albums ... ok
[INFO] [stdout] test album_endpoints::test_get_album ... ok
[INFO] [stdout] test album_endpoints::test_get_album_tracks ... ok
[INFO] [stdout] test artist_endpoints::test_get_artist ... ok
[INFO] [stdout] test album_endpoints::test_check_saved_albums ... ok
[INFO] [stdout] test album_endpoints::test_get_new_releases ... ok
[INFO] [stdout] test audiobook_endpoints::test_get_audiobook ... ok
[INFO] [stdout] test episode_endpoints::test_get_episode ... ok
[INFO] [stdout] test audiobook_endpoints::test_save_audiobooks ... ok
[INFO] [stdout] test episode_endpoints::test_save_episodes ... ok
[INFO] [stdout] test category_endpoints::test_get_category ... ok
[INFO] [stdout] test category_endpoints::test_get_categories ... ok
[INFO] [stdout] test error_handling::test_bad_request_error ... ok
[INFO] [stdout] test category_endpoints::test_get_category_playlists ... ok
[INFO] [stdout] test error_handling::test_unauthorized_error ... ok
[INFO] [stdout] test error_handling::test_server_error ... ok
[INFO] [stdout] test error_handling::test_forbidden_error ... ok
[INFO] [stdout] test library_endpoints::test_remove_tracks ... ok
[INFO] [stdout] test library_endpoints::test_get_saved_tracks ... ok
[INFO] [stdout] test library_endpoints::test_check_saved_tracks ... ok
[INFO] [stdout] test library_endpoints::test_save_tracks ... ok
[INFO] [stdout] test player_endpoints::test_get_currently_playing ... ok
[INFO] [stdout] test player_endpoints::test_add_to_queue ... ok
[INFO] [stdout] test audiobook_endpoints::test_get_audiobook_chapters ... ok
[INFO] [stdout] test markets_endpoints::test_get_markets ... ok
[INFO] [stdout] test player_endpoints::test_get_playback_state ... ok
[INFO] [stdout] test artist_endpoints::test_get_related_artists ... ok
[INFO] [stdout] test player_endpoints::test_get_available_devices ... ok
[INFO] [stdout] test player_endpoints::test_get_queue ... ok
[INFO] [stdout] test player_endpoints::test_get_playback_state_no_active_device ... ok
[INFO] [stdout] test player_endpoints::test_seek_to_position ... ok
[INFO] [stdout] test player_endpoints::test_set_shuffle ... ok
[INFO] [stdout] test player_endpoints::test_set_repeat ... ok
[INFO] [stdout] test player_endpoints::test_get_recently_played ... ok
[INFO] [stdout] test player_endpoints::test_pause_playback ... ok
[INFO] [stdout] test player_endpoints::test_skip_next ... ok
[INFO] [stdout] test playlist_endpoints::test_follow_playlist ... ok
[INFO] [stdout] test player_endpoints::test_skip_previous ... ok
[INFO] [stdout] test player_endpoints::test_set_volume ... ok
[INFO] [stdout] test playlist_endpoints::test_get_current_user_playlists ... ok
[INFO] [stdout] test artist_endpoints::test_get_artists_albums ... ok
[INFO] [stdout] test playlist_endpoints::test_get_playlist ... ok
[INFO] [stdout] test playlist_endpoints::test_change_playlist_details ... ok
[INFO] [stdout] test playlist_endpoints::test_remove_items_from_playlist ... ok
[INFO] [stdout] test search_endpoints::test_search_tracks ... ok
[INFO] [stdout] test playlist_endpoints::test_unfollow_playlist ... ok
[INFO] [stdout] test show_endpoints::test_remove_saved_shows ... ok
[INFO] [stdout] test search_endpoints::test_search_multiple_types ... ok
[INFO] [stdout] test show_endpoints::test_save_shows ... ok
[INFO] [stdout] test show_endpoints::test_get_show ... ok
[INFO] [stdout] test playlist_endpoints::test_create_playlist ... ok
[INFO] [stdout] test track_endpoints::test_get_several_tracks ... ok
[INFO] [stdout] test track_endpoints::test_get_track_not_found ... ok
[INFO] [stdout] test user_endpoints::test_follow_artists ... ok
[INFO] [stdout] test user_endpoints::test_check_following ... ok
[INFO] [stdout] test user_endpoints::test_get_users_profile ... ok
[INFO] [stdout] test user_endpoints::test_get_users_top_tracks ... ok
[INFO] [stdout] test user_endpoints::test_get_current_user ... ok
[INFO] [stdout] test user_endpoints::test_unfollow_artists ... ok
[INFO] [stdout] test track_endpoints::test_get_track ... ok
[INFO] [stdout] test playlist_endpoints::test_add_items_to_playlist ... ok
[INFO] [stdout] test user_endpoints::test_get_followed_artists ... ok
[INFO] [stdout] test show_endpoints::test_get_show_episodes ... ok
[INFO] [stdout] test error_handling::test_rate_limit_error has been running for over 60 seconds
[INFO] [stdout] test error_handling::test_rate_limit_error ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 66 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 90.11s
[INFO] [stderr]      Running tests/integration_test.rs (/opt/rustwide/target/debug/deps/integration_test-69e61122c34a5192)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 42 tests
[INFO] [stdout] test test_error_kind_string_representation ... ok
[INFO] [stdout] test test_device_deserialization ... ok
[INFO] [stdout] test test_album_release_year_formats ... ok
[INFO] [stdout] test test_extract_id_from_uri ... ok
[INFO] [stdout] test test_extract_id_from_url ... ok
[INFO] [stdout] test test_extract_id_passthrough ... ok
[INFO] [stdout] test test_extract_id_various_uri_formats ... ok
[INFO] [stdout] test test_extract_id_from_url_with_params ... ok
[INFO] [stdout] test test_error_response_serialization ... ok
[INFO] [stdout] test test_album_deserialization ... ok
[INFO] [stdout] test test_error_with_details_serialization ... ok
[INFO] [stdout] test test_fuzzy_contains_bonus ... ok
[INFO] [stdout] test test_artist_deserialization ... ok
[INFO] [stdout] test test_extract_id_various_url_formats ... ok
[INFO] [stdout] test test_fuzzy_starts_with_bonus ... ok
[INFO] [stdout] test test_levenshtein_empty_string ... ok
[INFO] [stdout] test test_levenshtein_identical_strings ... ok
[INFO] [stdout] test test_levenshtein_multiple_operations ... ok
[INFO] [stdout] test test_levenshtein_single_char_diff ... ok
[INFO] [stdout] test test_pin_creation ... ok
[INFO] [stdout] test test_fuzzy_similarity_threshold ... ok
[INFO] [stdout] test test_pin_uri_for_each_type ... ok
[INFO] [stdout] test test_pin_uri_generation ... ok
[INFO] [stdout] test test_playback_state_deserialization ... ok
[INFO] [stdout] test test_playback_state_progress_formatting ... ok
[INFO] [stdout] test test_fuzzy_no_match_low_score ... ok
[INFO] [stdout] test test_resource_type_from_str ... ok
[INFO] [stdout] test test_fuzzy_word_match ... ok
[INFO] [stdout] test test_resource_type_from_str_invalid ... ok
[INFO] [stdout] test test_response_json_format ... ok
[INFO] [stdout] test test_fuzzy_exact_match_case_insensitive ... ok
[INFO] [stdout] test test_search_filters_tags ... ok
[INFO] [stdout] test test_search_filters_all_fields ... ok
[INFO] [stdout] test test_search_filters_with_artist ... ok
[INFO] [stdout] test test_search_filters_empty ... ok
[INFO] [stdout] test test_resource_type_as_str ... ok
[INFO] [stdout] test test_search_filters_multiple ... ok
[INFO] [stdout] test test_response_status_variants ... ok
[INFO] [stdout] test test_success_response_serialization ... ok
[INFO] [stdout] test test_track_deserialization ... ok
[INFO] [stdout] test test_success_with_payload_serialization ... ok
[INFO] [stdout] test test_track_duration_formatting ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/rpc_tests.rs (/opt/rustwide/target/debug/deps/rpc_tests-51031ea824581448)
[INFO] [stdout] 
[INFO] [stdout] running 21 tests
[INFO] [stdout] test test_error_codes_values ... ok
[INFO] [stdout] test test_rpc_response_from_success ... ok
[INFO] [stdout] test test_rpc_request_parsing ... ok
[INFO] [stdout] test test_rpc_request_with_params ... ok
[INFO] [stdout] test test_server_config_custom_path ... ok
[INFO] [stdout] test test_rpc_notification_no_id ... ok
[INFO] [stdout] test test_server_config_default ... ok
[INFO] [stdout] test test_rpc_response_from_success_with_payload ... ok
[INFO] [stdout] test test_rpc_response_success_serialization ... ok
[INFO] [stdout] test test_rpc_notification_serialization ... ok
[INFO] [stdout] test test_rpc_response_error_serialization ... ok
[INFO] [stdout] test test_rpc_notification_without_params ... ok
[INFO] [stdout] test test_rpc_response_from_error ... ok
[INFO] [stdout] test test_server_event_sender ... ok
[INFO] [stdout] test test_server_socket_path ... ok
[INFO] [stdout] test test_server_parse_error ... ok
[INFO] [stderr]    Doc-tests spotify_cli
[INFO] [stdout] test test_server_version ... ok
[INFO] [stdout] test test_server_notification_no_response ... ok
[INFO] [stdout] test test_server_ping_pong ... ok
[INFO] [stdout] test test_server_unknown_method ... ok
[INFO] [stdout] test test_server_multiple_requests ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.45s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test src/cli/commands/macros.rs - cli::commands::macros::resource_check (line 167) ... ignored
[INFO] [stdout] test src/cli/commands/macros.rs - cli::commands::macros::resource_get (line 8) ... ignored
[INFO] [stdout] test src/cli/commands/macros.rs - cli::commands::macros::resource_list (line 43) ... ignored
[INFO] [stdout] test src/cli/commands/macros.rs - cli::commands::macros::resource_list_with_id (line 74) ... ignored
[INFO] [stdout] test src/cli/commands/macros.rs - cli::commands::macros::resource_remove (line 137) ... ignored
[INFO] [stdout] test src/cli/commands/macros.rs - cli::commands::macros::resource_save (line 107) ... ignored
[INFO] [stdout] test src/oauth/mod.rs - oauth (line 15) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.46s; merged doctests compilation took 0.45s
[INFO] running `Command { std: "docker" "inspect" "4e135ba9dee21ff5e1a6d9e25ad66d7b7a2ea01f1331233b284473db41e6caeb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4e135ba9dee21ff5e1a6d9e25ad66d7b7a2ea01f1331233b284473db41e6caeb", kill_on_drop: false }`
[INFO] [stdout] 4e135ba9dee21ff5e1a6d9e25ad66d7b7a2ea01f1331233b284473db41e6caeb
